
package com.xbongbong.admin.domain.dao;

import com.xbongbong.admin.domain.entity.RaidersCorpEntity;
import com.xbongbong.admin.domain.entity.ext.RaidersCorpEntityExt;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.List;
import java.util.Map;


/**
* @author autoGen
* @time 2019-09-18 13:56:15
*/
@Repository
@Mapper
public interface RaidersCorpDao {


	Integer insert(RaidersCorpEntity raidersCorp);
	Integer update(RaidersCorpEntity raidersCorp);

	/**
	 * 批量更新（更新del，sort，update_time）
	 *
	 * @param list 攻略关联公司列表
	 * @author 徐俊杰
	 * @date 2019/9/24 10:53
	 * @since v1.0
	 */
	void updateBatch(@Param("list") List<RaidersCorpEntity> list);

	void insertBatch(@Param("list") List<RaidersCorpEntity> raidersCorpList);

	Integer deleteByKey(@Param("key") Long key, @Param("corpid") String corpid);
	RaidersCorpEntity getByKey(@Param("key") Long key, @Param("corpid") String corpid);

	/**
	 * 通过攻略id获取攻略公司关系实体
	 * @param raidersId 攻略id
	 * @param corpid 公司id
	 * @return com.xbongbong.admin.domain.entity.RaidersCorpEntity
	 * @author zcp
	 * @date 19/9/29 029 14:26
	 * @update 19/9/29 029 14:26
	 * @since v1.0
	 * @version v1.0
	 */
	RaidersCorpEntity getByRaidersId(@Param("raidersId") Long raidersId, @Param("corpid") String corpid);


	List<RaidersCorpEntity>  findEntitys(@Param("param") Map<String, Object> param);
	Integer getEntitysCount(@Param("param") Map<String, Object> param);

	/**
	 * 按照攻略id分组，计算每个攻略的公司数（对公司id排重）
	 * @param param 筛选条件、排序信息等都塞入该map内
	 * @return java.util.List<com.xbongbong.admin.domain.entity.ext.RaidersCorpEntityExt>
	 * @author zcp
	 * @date 19/9/25 025 21:32
	 * @update 19/9/25 025 21:32
	 * @since v1.0
	 * @version v1.0
	 */
	List<RaidersCorpEntityExt>  getCorpCount(@Param("param") Map<String, Object> param);

	/**
	 * 按照攻略id分组，计算每个攻略已经解锁的公司数
	 * @param raidersIdIn 攻略id数组
	 * @return java.util.List<com.xbongbong.admin.domain.entity.ext.RaidersCorpEntityExt>
	 * @author zcp
	 * @date 19/9/25 025 21:32
	 * @update 19/9/25 025 21:32
	 * @since v1.0
	 * @version v1.0
	 */
	List<RaidersCorpEntityExt>  getUnLockCorpCount(@Param("raidersIdIn")Collection<Long> raidersIdIn);

	/**
	 * 获取总分和
	 *
	 * @param param 参数
	 * @return java.lang.Integer
	 * @author 徐俊杰
	 * @date 2019/9/26 9:43
	 * @since v1.0
	 */
	Integer getTotalScoreSum(@Param("param") Map<String, Object> param);

	/**
	 * 获取使用攻略的公司数
	 *
	 * @param param 参数
	 * @return java.lang.Integer
	 * @author 徐俊杰
	 * @date 2019/9/27 14:09
	 * @since v1.0
	 */
	Integer getRaidersCorpCount(@Param("param") Map<String, Object> param);

}